home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr35 / qwkblt12.zip / QWK-BLT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1993-05-27  |  4KB  |  297 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 1.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     Integer  INTEGER012
  34.     Integer  INTEGER013
  35.     String   STRING001
  36.     String   STRING002
  37.     String   STRING003
  38.     String   STRING004
  39.     String   STRING005
  40.     String   STRING006
  41.     String   STRING007
  42.     String   STRING008
  43.     String   STRING009
  44.  
  45. ;------------------------------------------------------------------------------
  46.  
  47.     STRING003 = ""
  48.     INTEGER002 = 0
  49.     INTEGER004 = 1
  50.     INTEGER006 = 1
  51.     STRING004 = GetToken()
  52.     While (STRING004 <> "") Do
  53.         If (Left(Upper(STRING004), 1) == "B") Then
  54.             INTEGER002 = Or(INTEGER002, 1)
  55.         Else
  56.             STRING003 = STRING003 + STRING004
  57.         Endif
  58.         If (Left(Upper(STRING004), 1) == "D") INTEGER002 = Or(INTEGER002, 2)
  59.         STRING004 = GetToken()
  60.     EndWhile
  61.     If (INTEGER002 <> 3) Goto LABEL013
  62.     GetUser
  63.     STRING001 = ReadLine(PCBDat(), 31)
  64.     STRING002 = Trim(ReadLine(STRING001, 25), " ")
  65.     If ((STRING002 == "") || (Left(STRING002, 1) == " ")) Goto LABEL013
  66.     If (Exist(STRING002)) Then
  67.         If (Exist(PPEPath() + PPEName() + ".cfg")) Then
  68.             BOOLEAN002 = 1
  69.             STRING007 = ""
  70.             STRING007 = ReadLine(PPEPath() + PPEName() + ".cfg", 1)
  71.             Goto LABEL001
  72.         Endif
  73.         BOOLEAN002 = 0
  74.         :LABEL001
  75.         INTEGER005 = FileInf(STRING002, 4) / 30
  76.         Gosub LABEL005
  77.         INTEGER001 = RegAX()
  78.         If (BOOLEAN001) Goto LABEL013
  79.         DispStr "@X0FScanning Bulletins "
  80.         If (BOOLEAN002) Then
  81.             While ((INTEGER004 <= Len(STRING007)) && (INTEGER004 <= INTEGER005)) Do
  82.                 If (Mid(STRING007, INTEGER004, 1) <> "Y") Goto LABEL002
  83.                 If (INTEGER006 <> INTEGER004 - 1) Gosub LABEL007
  84.                 DispStr "."
  85.                 Gosub LABEL006
  86.                 Gosub LABEL009
  87.                 :LABEL002
  88.                 Inc INTEGER004
  89.             EndWhile
  90.             Goto LABEL004
  91.         Endif
  92.         While (INTEGER004 <= INTEGER005) Do
  93.             If (And(INTEGER004, 1) == 1) DispStr "."
  94.             Gosub LABEL006
  95.             Gosub LABEL009
  96.             :LABEL003
  97.             Inc INTEGER004
  98.         EndWhile
  99.         :LABEL004
  100.         Gosub LABEL008
  101.         DispStr Chr(13)
  102.         Goto LABEL013
  103.         :LABEL005
  104.         VarSeg STRING002, INTEGER013
  105.         VarOff STRING002, INTEGER012
  106.         INTEGER009 = 15648
  107.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  108.         INTEGER001 = RegAX()
  109.         BOOLEAN001 = RegCF()
  110.         Return
  111.         :LABEL006
  112.         STRING008 = "                              "
  113.         INTEGER010 = INTEGER001
  114.         INTEGER009 = 16128
  115.         INTEGER011 = Len(STRING008)
  116.         VarSeg STRING008, INTEGER013
  117.         VarOff STRING008, INTEGER012
  118.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  119.         BOOLEAN001 = RegCF()
  120.         If (BOOLEAN001 || (RegAX() == 0)) STRING008 = ""
  121.         INTEGER006 = INTEGER004
  122.         Return
  123.         :LABEL007
  124.         INTEGER010 = INTEGER001
  125.         INTEGER009 = 16896
  126.         INTEGER012 = (30 * (INTEGER004 - 1)) % 4096
  127.         INTEGER011 = (30 * (INTEGER004 - 1)) / 4096
  128.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  129.         BOOLEAN001 = RegCF()
  130.         Return
  131.         :LABEL008
  132.         INTEGER010 = INTEGER001
  133.         INTEGER009 = 15872
  134.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  135.         BOOLEAN001 = RegCF()
  136.         Return
  137.         Inc INTEGER004
  138.         If (And(INTEGER004, 1) == 1) DispStr "."
  139.         Return
  140.         :LABEL009
  141.         STRING005 = Trim(STRING008, " ")
  142.         If (STRING008 == "") Goto LABEL003
  143.         If (!Exist(STRING005)) Goto LABEL003
  144.         If (FileInf(STRING005, 4) == 0) Goto LABEL003
  145.         INTEGER003 = 0
  146.         If (FileInf(STRING005, 2) >= U_LDate()) INTEGER003 = Or(INTEGER003, 1)
  147.         If (FileInf(STRING005, 3) > U_LTime()) INTEGER003 = Or(INTEGER003, 2)
  148.         If (INTEGER003 == 3) Then
  149.             STRING006 = TempPath() + FileInf(STRING005, 8) + FileInf(STRING005, 9)
  150.             Gosub LABEL010
  151.         Endif
  152.         Return
  153.         :LABEL010
  154.         VarSeg STRING005, INTEGER013
  155.         VarOff STRING005, INTEGER012
  156.         INTEGER009 = 15648
  157.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  158.         If (RegCF()) Goto LABEL012
  159.         INTEGER007 = RegAX()
  160.         VarSeg STRING006, INTEGER013
  161.         VarOff STRING006, INTEGER012
  162.         INTEGER009 = 15360
  163.         INTEGER011 = 0
  164.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  165.         If (RegCF()) Then
  166.             INTEGER010 = INTEGER007
  167.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  168.             Goto LABEL012
  169.         Endif
  170.         INTEGER008 = RegAX()
  171.         STRING009 = "                                "
  172.         STRING009 = STRING009 + STRING009
  173.         STRING009 = STRING009 + STRING009
  174.         INTEGER010 = INTEGER007
  175.         INTEGER011 = Len(STRING009)
  176.         VarSeg STRING009, INTEGER013
  177.         VarOff STRING009, INTEGER012
  178.         INTEGER009 = 16128
  179.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  180.         If (RegCF() || (RegAX() == 0)) Then
  181.             BOOLEAN003 = 0
  182.             Goto LABEL011
  183.         Endif
  184.         BOOLEAN003 = 1
  185.         :LABEL011
  186.         While (BOOLEAN003) Do
  187.             INTEGER010 = INTEGER008
  188.             INTEGER011 = RegAX()
  189.             INTEGER009 = 16384
  190.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  191.             INTEGER010 = INTEGER007
  192.             INTEGER011 = Len(STRING009)
  193.             INTEGER009 = 16128
  194.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  195.             If (RegCF() || (RegAX() == 0)) BOOLEAN003 = 0
  196.         EndWhile
  197.         INTEGER010 = INTEGER008
  198.         INTEGER009 = 15872
  199.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  200.         INTEGER010 = INTEGER007
  201.         INTEGER009 = 15872
  202.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  203.         :LABEL012
  204.         Return
  205.     Endif
  206.     :LABEL013
  207.     KbdStuff "qwk " + STRING003 + Chr(13)
  208.     End
  209.  
  210. ;------------------------------------------------------------------------------
  211. ;
  212. ; Usage report (before postprocessing)
  213. ;
  214. ; ■ Statements used :
  215. ;
  216. ;    1       End
  217. ;    29      Goto 
  218. ;    65      Let 
  219. ;    27      If 
  220. ;    1       GetUser
  221. ;    8       Gosub 
  222. ;    7       Return
  223. ;    3       Inc 
  224. ;    1       KbdStuff 
  225. ;    5       DispStr 
  226. ;    12      DoIntr 
  227. ;    5       VarSeg 
  228. ;    5       VarOff 
  229. ;
  230. ;
  231. ; ■ Functions used :
  232. ;
  233. ;    2       *
  234. ;    2       /
  235. ;    1       %
  236. ;    11      +
  237. ;    3       -
  238. ;    12      ==
  239. ;    4       <>
  240. ;    3       <=
  241. ;    1       >
  242. ;    1       >=
  243. ;    12      !
  244. ;    1       &&
  245. ;    4       ||
  246. ;    4       Len(
  247. ;    2       Upper()
  248. ;    1       Mid()
  249. ;    3       Left()
  250. ;    2       Chr()
  251. ;    2       Trim()
  252. ;    1       U_LDate()
  253. ;    1       U_LTime()
  254. ;    1       PCBDat()
  255. ;    2       PPEPath()
  256. ;    3       ReadLine()
  257. ;    2       GetToken()
  258. ;    8       RegAX()
  259. ;    8       RegCF()
  260. ;    3       Exist()
  261. ;    2       And()
  262. ;    4       Or()
  263. ;    6       FileInf()
  264. ;    2       PPEName()
  265. ;    1       TempPath()
  266. ;
  267. ;------------------------------------------------------------------------------
  268. ;
  269. ; Analysis flags : Id
  270. ;
  271. ; I - Interrupt call ■ 5
  272. ;     This is rare in PPE... Although it may be a way to replace a PPE
  273. ;     command by its fast interrupt equivalent. Be aware that an
  274. ;     interrupt call may do anything... nasty (formating HD, rebooting,...)
  275. ;     or usefull (fast screen i/o, hardware ressource access,...). Check!
  276. ;     ■ Search for : DOINTR
  277. ;
  278. ; d - Access PCBOARD.DAT ■ 2
  279. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  280. ;     for many PPE so they can find various informations on the system
  281. ;     (system paths, max number of lines in messages, ...) but it may also
  282. ;     be a way to gather vital informations.
  283. ;     ■ Search for : PCBDAT()
  284. ;
  285. ;------------------------------------------------------------------------------
  286. ;
  287. ; Postprocessing report
  288. ;
  289. ;    0       For/Next
  290. ;    4       While/EndWhile
  291. ;    7       If/Then or If/Then/Else
  292. ;    0       Select Case
  293. ;
  294. ;------------------------------------------------------------------------------
  295. ;                 AEGiS Corp - Break the routines, code against the machines!
  296. ;------------------------------------------------------------------------------
  297.